import { API } from '@/config/api.js'

/**
 * 获取会议基本信息
 * @returns {Promise} 返回会议基本信息
 */
export function getEventInfo() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.EVENT_INFO,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取会议信息失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取活动日程数据
 * @returns {Promise} 返回活动日程数据
 */
export function getScheduleData() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.SCHEDULE,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取活动日程失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取注意事项数据
 * @returns {Promise} 返回注意事项数据
 */
export function getNoticeData() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.NOTICE,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取注意事项失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取酒店住宿数据
 * @returns {Promise} 返回酒店住宿数据
 */
export function getHotelData() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.HOTEL,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取酒店信息失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取交通服务数据
 * @returns {Promise} 返回交通服务数据
 */
export function getTransportData() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.TRANSPORT,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取交通信息失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取出行指引数据
 * @returns {Promise} 返回出行指引数据
 */
export function getGuideData() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.GUIDE,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取出行指引失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取用餐安排数据
 * @returns {Promise} 返回用餐安排数据
 */
export function getDiningData() {
  return new Promise((resolve, reject) => {
    uni.request({
      url: API.HOME.DINING,
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 200) {
          resolve(res.data.data)
        } else {
          uni.showToast({
            title: res.data.message || '获取用餐安排失败',
            icon: 'none'
          })
          reject(res.data)
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 获取所有首页数据
 * @returns {Promise} 返回所有首页数据
 */
export function getAllHomeData() {
  return Promise.all([
    getEventInfo().catch(() => ({})),
    getScheduleData().catch(() => ({})),
    getNoticeData().catch(() => ({})),
    getHotelData().catch(() => ({})),
    getTransportData().catch(() => ({})),
    getGuideData().catch(() => ({})),
    getDiningData().catch(() => ({}))
  ]).then(([eventInfo, schedule, notice, hotel, transport, guide, dining]) => {
    return {
      eventInfo,
      schedule,
      notice,
      hotel,
      transport,
      guide,
      dining
    }
  })
} 